<script>
    // let Person = ()=>{
    //     console.log('一个函数');
    // }
    // 实例化对象
    // 1.箭头函数不能作为构造函数
    // new Person(); // Person is not a constructor

    // 2.箭头函数中没有this，箭头函数中的this取决于它所处的上层环境，上层环境是哪个对象，它的this就指向哪个对象
    // 箭头函数的this不能修改的，call、apply无效
    // 上层环境：全局、函数局部
    let f1 = ()=>{
        console.log(this, '箭头函数');
    }
    f1(); // this-->window
    // 2.1 箭头函数的this不能修改的
    f1.call(f1); // 通过call改变this指向 无效

    // 2.2 点击事件
    document.onclick = ()=>{
        console.log(this, '箭头2');
    }


    // 2.3 
    function Person(){
        // ------this---
        this.aa = 'abcd';
        let f2 = ()=>{
            console.log(this, 'this33');
        }
        f2();
    }
    Person(); // this--window
    new Person(); // 构造函数中的this指向实例化的对象 Person {aa: 'abcd'}aa: "abcd"


    // 2.4 对象的括号不能称为环境
    let obj = {
        name: 'tom',
        f1: function(){
            console.log(this, 'f1');
        },
        f2(){
            console.log(this, 'f2');
        },
        f3: ()=>{
            console.log(this, 'f3');
        }
    }
    obj.f1(); // 谁调用函数，this就指向谁   this->obj
    obj.f2(); // this->obj
    obj.f3(); // this-->window   所处的上层环境是全局，指向window



    // 箭头函数一般在回调函数中使用，以前的事件处理函数、对象中还用之前的形式function

</script>